package com.qf.homeworkssm.dao;

import com.qf.homeworkssm.entity.User;
import com.qf.homeworkssm.vo.UserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserDao {

    User getUserById(Integer id);
    
    User getUserByIdAndPassword(@Param("id") Integer id, @Param("pwd") String password);
    
    User selectUserByIdAndPwd_map(Map map);
    
    User selectUserByUserInfo(User user);
    
    List<User> selectUsersByName(@Param("name") String name);
    
    Integer deleteUserByid(@Param("id") Integer id);
    
    Integer updateUser(User user);

    Integer insertUser(User user);
    
    // 选择所有没有被点名的同学
    List<User> getAllUnPickedUsers();

    // 把sex重置为0
    Integer resetUsers();
    
    //演示 sql 注入问题
    List<User> selectUsersByKeyword(@Param("name") String name);
    
    //演示 $ 的使用场景
    List<User> selectUserByIdWithOrder(@Param("rule") String rule);
    
    //查询所有用户，分页查询
    List<User> getAllUserByPage(@Param("start") Integer start, @Param("size") Integer size);
    
    //查询所有用户
    List<User> getAllUser();
    
    //测试让mysql数据库休眠指定时间
    void sleep();

    //查询数据库的姓名和密码
    User selectNameAndPassword(@Param("name") String name, @Param("password") String password);

    Integer addUser(User user);

    User getUserByName(@Param("username") String username);

    User selectUserName(String username);


    //查询user总条数
    Integer selectCount();

    //分页查询
    List<User> selectUserByPage(@Param(("start")) int start, @Param("limit") Integer limit);


    Integer delUssers(Integer[] ids);

//    Integer insertInUser();

    //根据条件查询用户
    List<User> getUserByCondition(UserVo userVo);
}
